import os
#声明一个计数变量
size = 0
def get_dir_size(target_dir):
    #以为要在内部进行计算与赋值，所以要用global提升size为全局变量
    global size
    #列出当前文件所在的目录下的所有文件
    d_list = os.listdir(target_dir)
    print(d_list)
    #遍历文件和文件夹列表，获取所有文件的大小
    for f in d_list:
        # 把每个文件跟绝对路径进行拼接
        f = os.path.join(target_dir,f)
        if os.path.isfile(f):
            print(f, os.path.getsize(f))
            size += os.path.getsize(f)
        if os.path.isdir(f):
            get_dir_size(f)
    return size

#调用函数
dir_size = get_dir_size(r'C:\Users\ttkx\Desktop')#在python中\U等是由特殊含义的，为防止转义，在前面加上字母r

#获取文件的大小
print('总的大小：',dir_size)

# os.walk()可以得到一个三元tupple(dirpath, dirnames, filenames)，
# 1、第一个为起始路径，
# 2、第二个为起始路径下的文件夹，
# 3、第三个是起始路径下的文件。
# 其中dirpath是一个string，代表目录的路径，dirnames是一个list，包含了dirpath下所有子目录的名字。filenames是一个list，
# 包含了非目录文件的名字。这些名字不包含路径信息，如果需要得到全路径，需要使用os.path.join(dirpath, name).
import os
from os.path import join, getsize
size1 = 0
def getdirsize(dir):
    global size1
    for root, dirs, files in os.walk(dir):
        size1 += sum([getsize(join(root, name)) for name in files])
    return size1
dir_size1 = getdirsize(r'C:\Users\ttkx\Desktop')#在python中\U等是由特殊含义的，为防止转义，在前面加上字母r

#获取文件的大小
print('总的大小：',dir_size1)